/**
 * @Author lx
 * @Version V 0.0.1
 * @Date 2023/11/08
 * @Description 项目配置
 */

import { defineConfig, loadEnv } from 'vite'
import path from 'path'
// Vue 3 单文件组件支持
import vue from '@vitejs/plugin-vue'
// 按需导入element
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'

// 官方文档地址: https://vitejs.dev/config/
export default defineConfig(({ command, mode }) => {
  const env = loadEnv(mode, process.cwd(), '')
  return {
    // 打包配置
    build: {
      base: '/',
      outDir: 'dist', //指定输出路径
      assetsDir: 'static', // 指定生成静态资源的存放路径
      //1.生产环境移除console
      minify: 'terser', // 可选值：'terser' | 'esbuild' 混淆器，terser构建后文件体积更小 
      //2.生产环境移除console
      // terserOptions: {
      //   compress: {
      //     drop_console: true,
      //   },
      // },
      // 是否启用css代码拆分
      cssCodeSplit: true,
      // 打包构建后是否生成 source map 文件。
      sourcemap: true,
    },

    plugins: [
      vue(),
      AutoImport({
        resolvers: [ElementPlusResolver()],
      }),
      Components({
        resolvers: [ElementPlusResolver()],
      }),
    ],
  
    // resolve.alias属性配置文件自定义路径。如下：设置‘@’代替‘./src’
    resolve: {
      alias: {
        //别名配置
        "~": path.resolve(__dirname, "./"), //配置的别名
        "@": path.resolve(__dirname, "./src"),
        '@api': path.resolve(__dirname, "./src/api"),
        '@ass': path.resolve(__dirname, "./src/assets"),
        '@com': path.resolve(__dirname, "./src/components"),
        '@rou': path.resolve(__dirname, "./src/router"),
        '@sto': path.resolve(__dirname, "./src/store"),
        '@sty': path.resolve(__dirname, "./src/styles"),
        '@uti': path.resolve(__dirname, "./src/utils"),
        '@data': path.resolve(__dirname, "./src/data"),
      }
    },

    // 配置使用全局scss变量和方法
    css: {
      preprocessorOptions: {
        scss: {
          additionalData: `@import "@sty/variable.scss";` // 此处全局的scss文件
        }
      }
    },

    // 开发服务器配置server
    server: {
      // host指定服务器应该监听哪个 IP 地址。 如果将此设置为 0.0.0.0 或者 true 将监听所有地址，包括局域网和公网地址。
      host: true,
      // 开发服务器端口配置。（注意：如果配置的端口已经被使用，Vite 会自动尝试下一个可用的端口，要看项目运行时最终生成的端口地址。）
      port: '9081',
      // open项目运行完毕是否自动在默认浏览器打开
      open: true,
      // 是否使用https，需要证书
      https: false,
      // proxy代理配置
      proxy: {
        '/api': {
          target: env.VITE_APP_API_URL,
          changeOrigin: true,//设置为 true 允许跨域请求
          rewrite: path => path.replace(/^\/api/, '')
        },
        '/prod-api': {
          target: "https://xxxx.com/",
          changeOrigin: true,///设置访问目标地址允许跨域
          rewrite: (p) => p.replace(/^\/prod-api/, '')
        },
      }
    },
  }
})
